#include "connect.hpp"

// int main()
// {
//     //申请共享内存
//     int shmid = Creatshm();
//     //链接共享内存到对应的共享区，
//     char* shmaddr = (char*)shmat(shmid,nullptr,0);

//     //在这里就可以进行通信了
//     struct shmid_ds shmds;
    
//     while(1)
//     {
//         cout<<"process2 say@ "<<shmaddr<<endl;
//         sleep(1);
//         shmctl(shmid,IPC_STAT,&shmds);
        
//         // cout << "shmds size: " << shmds.shm_segsz << endl;
//         // cout << "shmds nattch: " << shmds.shm_nattch << endl;
//         // printf("shmds key: 0x%x\n",  shmds.shm_perm.__key);
//     }

//     //记得要将链接的共享内存和共享区去链接
//     shmdt(shmaddr);
//     //最后将申请的共享内存删除掉
//     shmctl(shmid,IPC_RMID,nullptr);
//     return 0;
// }

int main()
{
    Init init;//创建管道
    //申请共享内存
    int shmid = Creatshm();
    //链接共享内存到对应的共享区，
    char* shmaddr = (char*)shmat(shmid,nullptr,0);
    
    int fd = open(FIFO_FILE,O_RDONLY);
    if(fd == -1)
    {
        log(FATAL,"open init fail %d : %s",errno,strerror(errno));
        exit(FIFO_OPEN_ERR);
    }
    //在这里就可以进行通信了
    struct shmid_ds shmds;
    
    while(1)
    {
        char flag;
        ssize_t s = read(fd,&flag,1);
        if(s <= 0) break;
        cout<<"process2 say@ "<<shmaddr<<endl;
        sleep(1);
        shmctl(shmid,IPC_STAT,&shmds);
        
        // cout << "shmds size: " << shmds.shm_segsz << endl;
        // cout << "shmds nattch: " << shmds.shm_nattch << endl;
        // printf("shmds key: 0x%x\n",  shmds.shm_perm.__key);
    }

    //记得要将链接的共享内存和共享区去链接
    shmdt(shmaddr);
    //最后将申请的共享内存删除掉
    shmctl(shmid,IPC_RMID,nullptr);
    return 0;
}